﻿using Oracle.ManagedDataAccess.Client;  // 引入 Oracle 数据库访问的命名空间
using System;  // 引入基础类库命名空间
using System.Data;  // 引入数据处理的命名空间

namespace Bank_database_system  // 定义命名空间 Bank_database_system
{
    public class Deposit_Operations  // 定义类 Deposit_Operations
    {
        // 定义数据库连接字符串作为常量
        private const string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=47.96.39.153)(PORT=1521))(CONNECT_DATA=(SID=orcl)));
                                                 User Id=system;
                                                 Password=Tongji123456;
                                                 Connection Timeout=5;";

        // 定义 Deposit 方法
        public static string Deposit(
            string depositCreditCardNumbers,
            decimal depositAmount,
            string depositBranchid,
            string ip,
            string depositStaffId)
        {
            string result = null;

            // 使用 OracleConnection 对象建立数据库连接
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                try
                {
                    // 打开数据库连接
                    connection.Open();

                    // 定义调用存储函数的 SQL 语句
                    string functionCall = "DEPOSIT";

                    // 使用 OracleCommand 对象调用存储函数
                    using (OracleCommand command = new OracleCommand(functionCall, connection))
                    {
                        command.CommandType = CommandType.StoredProcedure;
                        OracleParameter returnValue = new OracleParameter("return_value", OracleDbType.Varchar2, 2000)
                        {
                            Direction = ParameterDirection.ReturnValue
                        };
                        command.Parameters.Add(returnValue);

                        // 添加参数并设置其值
                        command.Parameters.Add("DEPOSIT_CREDIT_CARD_NUMBERS", OracleDbType.Varchar2).Value = depositCreditCardNumbers;
                        command.Parameters.Add("DEPOSIT_AMOUNT", OracleDbType.Decimal).Value = depositAmount;
                        command.Parameters.Add("DEPOSIT_BRANCH_ID", OracleDbType.Varchar2).Value = depositBranchid;
                        command.Parameters.Add("IP", OracleDbType.Varchar2).Value = ip;
                        command.Parameters.Add("DEPOSIT_STAFF_ID", OracleDbType.Varchar2).Value = depositStaffId;


                        // 执行存储函数
                        command.ExecuteNonQuery();

                        // 获取返回值
                        result = returnValue.Value.ToString();

                    }
                }
                catch (Exception ex)  // 捕获并处理可能发生的异常
                {
                    MessageBox.Show("数据库连接失败，请检查网络连接！", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            return result;  // 返回存储函数的返回值
        }
    }
}
